iT邦幫忙

0

【C#學習筆記】03《函式》

  • 分享至 

  • xImage
  •  

函式(Function)是程式設計中最重要的基礎概念之一,它可以被理解為「把一段功能包裝起來,之後可以重複呼叫使用」,讓程式運行更為高效,以及提高可維護性,也更別於團隊合作。
函式的核心概念與數學中的函數相似,都是「輸入、處理、輸出」的流程:函式接收資料作為輸入,經過內部邏輯處理後,可能回傳結果,也可能只執行特定功能。

Function中文翻譯有時候為函數有時候為函式,但兩者其實是一樣的東西,這邊統一稱為函式


【C#學習筆記】02《陣列與迴圈》
【C#學習筆記】04《整數與浮點數》


先前範例

【C#學習筆記】01《快速入門筆記》 中,有使用以下範例演示if-else條件式的寫法,我們接著用其演示函式的寫法。

//閏年判斷
bool isLeapYear;
var year = 2024;

if (year % 100 == 0)//巢狀條件判斷
{
    if(year % 400 == 0) isLeapYear = true;
    else isLeapYear = false;
}
else
{
    if(year % 4 == 0) isLeapYear = true;
    else isLeapYear = false;
}
if(isLeapYear) Console.WriteLine($"{year} is leap year");
else Console.WriteLine($"{year}is not leap year");

首先先將上述範例進一步簡化。
利用布林表達式(Boolean Expression)減少判斷的步驟。

布林表達式(Boolean Expression) 是一種「結果會是truefalse的運算式」

//閏年判斷
bool isLeapYear;
var year = 2024;

if (year % 100 == 0)
{
    isLeapYear = (year % 400 == 0);
}
else
{
    isLeapYear = (year % 4 == 0);
}
if (isLeapYear) Console.WriteLine($"{year} is leap year");
else Console.WriteLine($"{year}is not leap year");

函式(Function)

簡單介紹一下函式的格式

回傳型別 函式名稱(參數)
{
    函式內容(需有回傳值)
}

範例

int GetMax(int a, int b)
{
    return (a > b) ? a : b;
}
Console.WriteLine($"{GetMax(5, 10)} is the maximum value");

如果回傳型別是void,則不需要回傳值

void 函式名稱(參數)
{
    函式內容
}

範例

void PrintMessage(string message)
{
    Console.WriteLine(message);
}
PrintMessage("Hello, World!");

根據以上條件式的範例可以發現,假如今天有多個需要判斷的資料,我們就需要建立各自的判斷流程,這樣在程式運行上既沒有效率,也會讓程式碼冗長難以維護。
所以,我們可以將判斷的過程,包成一個函式(Function),便於之後重複利用。

//閏年判斷
bool IsLeapYear(int year)//function
{
    if(year % 100 == 0) return (year % 400 == 0);
    return (year % 4 == 0);
}

int[] years = { 1900, 2001, 2004, 2010, 2020 };

foreach (var year in years)
{
    if (IsLeapYear(year)) Console.WriteLine($"{year} is a leap year");//call function
    else Console.WriteLine($"{year} is not a leap year");
}

箭頭函式(Arrow Function)

如果函式只有一行回傳,則可以寫成以下格式

int GetMax(int a, int b) => (a > b) ? a : b;
Console.WriteLine($"{GetMax(5, 10)} is the maximum value");
//////////
void PrintMessage(string message) => Console.WriteLine(message);
PrintMessage("Hello, World!");

這裡使用的=>語法,是C#提供的簡化寫法之一,可用來讓函式以更精簡的形式呈現。這類語法與Lambda Expression(Lambda表達式)Expression-bodied member有關,後續章節將再詳細說明。


總結來說,函式(Function)的核心目的,就是將重複的邏輯功能封裝起來,使程式碼更容易閱讀、維護與重複利用。隨著專案規模逐漸變大,良好的函式設計也會直接影響程式架構的清晰度與開發效率。

在實際開發中,幾乎所有系統都建立在函式之上,無論是角色移動、資料計算、UI更新,甚至事件處理,都離不開函式的應用。因此,理解函式的設計方式與使用時機,是學習程式設計中非常重要的一步。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言